﻿using System;
using System.Collections.Generic;

namespace AutoDb {
	/// <summary>
	/// 
	/// </summary>
	abstract class DbText : DbObject {
		/// <summary>
		/// 
		/// </summary>
		/// <param name="lineInfo"></param>
		public DbText(string lineInfo)
			: base(lineInfo) {
		}
	} // end of DbText.

	/// <summary>
	/// 
	/// </summary>
	sealed class DbStaticText : DbText {
		/// <summary>
		/// 
		/// </summary>
		public string Text { get; set; }

		/// <summary>
		/// 
		/// </summary>
		/// <param name="lineInfo"></param>
		public DbStaticText(string lineInfo)
			: base(lineInfo) {
		}
	} // end of DbStaticText.

	/// <summary>
	/// 
	/// </summary>
	sealed class DbDynamicText : DbText {
		/// <summary>
		/// 
		/// </summary>
		public string Prepend { get; set; }

		/// <summary>
		/// 
		/// </summary>
		public IList<DbDynamicTextItem> Texts { get; private set; }

		/// <summary>
		/// 
		/// </summary>
		/// <param name="lineInfo"></param>
		public DbDynamicText(string lineInfo)
			: base(lineInfo) {

			Texts = new List<DbDynamicTextItem>();
		}
	} // end of DbDynamic.

	/// <summary>
	/// 
	/// </summary>
	sealed class DbDynamicTextItem : DbObject {
		/// <summary>
		/// 
		/// </summary>
		public string Parameter { get; set; }

		/// <summary>
		/// 
		/// </summary>
		public DynamicTextType DynamicTextType { get; set; }

		/// <summary>
		/// 
		/// </summary>
		public string Text { get; set; }

		/// <summary>
		/// 
		/// </summary>
		/// <param name="lineInfo"></param>
		public DbDynamicTextItem(string lineInfo)
			: base(lineInfo) {
		}
	} // end of DbDynamicText.
}
